iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
AI & Data

當個自我強化學習的勇者系列 第 4

Day4 - 增強式學習(Reinforcement Learning)中的四大步驟

  • 分享至 

  • xImage
  •  

在昨天我們有提到,增強式學習中有四大步驟,那今天我們就開始來逐一說明、建構各個步驟。

Environment

增強式學習(RL)允許環境初始化其內部狀態。以下方程式碼為例,我們將環境狀態定義為一個計數器,它限制訓練的對象(agent)與環境(environment)互動所允許的時間步數:

class Environment:
    def __init__(self):
        self.steps_left = 10

Agent

訓練的對象(agent)包含兩個方法:建構函式在環境中執行一步(step)的方法:

class Agent:
    def __init__(self):
        self.total_reward = 0.0


def step(self, env):
    current_obs = env.get_observation()
    actions = env.get_actions()
    reward = env.action(random.choice(actions))
    self.total_reward += reward

Observation

get_observation() 方法會將目前環境的觀察結果傳回給訓練的對象(agent)。 get_observation() 通常是作為環境內部狀態的某些函數來實現。 在下方程式碼中,觀察(observation)向量全為零,代表環境基礎沒有內部狀態:

def get_observation(self):
    return [0.0, 0.0, 0.0]

Actions

get_actions() 方法允許訓練的對象(agent)查詢它可以執行的動作(action)集合。 通常,訓練的對象(agent)可以執行的動作集不會隨著時間的推移而改變,但某些動作在不同的狀態下可能變得不可能執行(例如,在圍棋遊戲的任何位置中,並非每個動作都是可能的)。以下方程式碼為例,訓練的對象(agent)有兩種可執行的動作(action),並以整數 0 和 1 進行編碼:

def get_actions(self):
    return [0, 1]

action()有兩項主要的任務:處理訓練的對象(agent)的動作(action)返回該操作的獎勵(reward)

def action(self, action):
    if self.is_done():  ## 結束訊號
        raise Exception("Game is over")
    self.steps_left -= 1
    return random.random()

結束訊號

下方程式碼,is_done()表示訓練的對象(agent)發出事件結束的訊號。 強化學習(RL)為系統環境(environment)與訓練的對象(agent)之間的互動,切分一系列的學習、訓練步驟。但是在面對不同事件,訓練的對象(agent)的學習有有限的無限的兩種情況(舉例說明:象棋、圍棋遊戲,就是為有限的學習情況;機器人面對的人事物,就是為無限的學習情況)。因此,為了涵蓋有限與無限的兩種情況,可透過is_done()來檢測增強式學習是否結束:

def is_done(self):
    return self.steps_left == 0

總結

訓練對象的步驟,可分為以下四大步驟,以達成增強式學習的目標:

  1. 觀察環境
  2. 根據觀察結果決定要採取的行動
  3. 將操作提交給環境
  4. 獲取當前步驟的獎勵
if __name__ == "__main__":
    env = Environment()
    agent = Agent()
    while not env.is_done():
        agent.step(env)
    print("Total reward got: %.4f" % agent.total_reward)

參考資料:

  1. Reinforcement-learning-an-introduction by Richard Sutton & Andrew Barto (2nd edition)
  2. DeepMind(2021)

https://storage.googleapis.com/deepmind-media/UCL%20x%20DeepMind%202021/Lecture%201%20-%20introduction.pdf

本日心得

每天都在為明天的內容煩惱XD
最近看了一本書寫到,人在成長落落大方的年紀,就是需要去經歷、去碰壁吧,每個人都有自己成長的軌跡,要好好的向前進,即使休息一下或是走慢一點也沒關係,這些過程你都還是在前進,每一步都是未來成長的養分。/images/emoticon/emoticon35.gif
(增強式學習(RL)就跟人的成長過程一樣,學習、成長前進www)


上一篇
Day3 - 增強式學習(Reinforcement Learning)中的Agent
下一篇
Day5 - 在增強式學習中了解「馬可夫決策過程(Markov Decision Process)」
系列文
當個自我強化學習的勇者5
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言